using UnityEngine;
using TMPro;
using UnityEngine.UI;

public class konglong : MonoBehaviour
{
    public float maxLifeTime = 180f;  // 初始生存时间
    private float currentLifeTime;    // 当前生存时间
    private float health = 100f;      // 初始血量
    private GameController gameController;
    public AudioSource audioSource;
    public AudioClip audioClip;
    private string username; // 存储用户名本地
    private string giftName;
    public Slider healthSlider; // 血条Slider
    public TextMeshProUGUI usernameText; // TextMeshProUGUI 组件
    public TextMeshProUGUI damageTextPrefab; // 飘字预制体

    public float moveSpeed = 1f; // 移动速度

    void Start()
    {
        gameController = FindObjectOfType<GameController>(); // 添加这一行

        // 从对象的名称中提取用户名和礼物名
        ExtractUsernameAndGiftNameFromObjectName();

        // 设置TextMeshPro文本
        UpdateUsernameText(username, giftName);

        // 初始化生存时间
        currentLifeTime = maxLifeTime;

        // 在启动时调用生存时间更新方法
        UpdateLifeTime();

        // 调用InvokeRepeating方法，每隔一秒钟调用一次UpdateLifeTime方法
        InvokeRepeating("UpdateLifeTime", 1f, 1f);
    }

    void Update()
    {
        // 每帧更新移动逻辑
        MoveForward();
    }

    private void MoveForward()
    {
        // 使对象向前移动
        transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
    }

    private void UpdateLifeTime()
    {
        // 生存时间逻辑的实现，例如减少 currentLifeTime 的值
        currentLifeTime -= 1f;

        // 根据需要执行其他操作，例如检查是否需要销毁对象
        if (currentLifeTime <= 0 || health <= 0)
        {
            DestroySelf();
        }
    }

    private void OnCollisionEnter(Collision collision)
    {
        // 检查碰撞是否发生在可以造成伤害的对象上
        if (collision.gameObject.CompareTag("DamageDealer"))
        {
            // 碰撞时减少生命值
            float damage = 10f; // 根据需要调整伤害值
            health -= damage;

            // 显示飘字
            ShowDamageText(damage);

            // 更新血条
            if (healthSlider != null)
            {
                healthSlider.value = health / 100f; // 假设最大生命值为100
            }

            // 如果生命值小于等于0，则销毁对象
            if (health <= 0)
            {
                DestroySelf();
            }
        }
    }

    private void ShowDamageText(float damage)
    {
        // 实例化飘字预制体
        TextMeshProUGUI damageText = Instantiate(damageTextPrefab, transform.position, Quaternion.identity);
        damageText.transform.SetParent(transform); // 确保飘字跟随对象移动

        // 设置飘字文本内容
        damageText.text = "-" + damage.ToString();

        // 设置飘字销毁的时间
        Destroy(damageText.gameObject, 1f);
    }

    private void DestroySelf()
    {
        Debug.Log("DestroySelf called with username: " + username);

        // 直接销毁对象，不需要重复检查条件
        Destroy(gameObject);
    }

    // 从对象的名称中提取用户名和礼物名
    private void ExtractUsernameAndGiftNameFromObjectName()
    {
        // 假设对象名称格式为 "DragonSoulEaterRedHP-Variant(Clone)_{username}_{giftName}"
        string[] parts = gameObject.name.Split('-');

        if (parts.Length >= 3)
        {
            username = parts[parts.Length - 2];
            giftName = parts[parts.Length - 1];
        }
        else
        {
            Debug.LogWarning("Object name format doesn't match expected format.");
        }
    }

    // 更新 TextMeshPro 的文本
    private void UpdateUsernameText(string username, string giftName)
    {
        // 从当前对象及其子对象中查找 TextMeshProUGUI 组件
        if (usernameText != null)
        {
            usernameText.text = username + " " + giftName;
            Debug.Log("Username set to: " + username + " " + giftName);
        }
        else
        {
            Debug.LogError("TextMeshProUGUI not found! Make sure to drag the TextMeshProUGUI component to the usernameText field in the inspector.");
        }
    }
}